<?php
/**
 * Controller_Admin_Country
 *
 * Класс Controller_Admin_Country отвечает за обработку стран в админке
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class Controller_Admin_Country extends Controller_Admin {

	/**
	 * Выбор действия по URL
	 *
	 */
	public function action() {
		Service_Debug::setDebug();
		$this->addCss('cms/countries.css');
		switch ($this->arrRequest[2]) {
			case '': case 'list':
				$this->actionList();
			  break;
			case 'edit':
				$countryCode = Service_Escape::absolutelyEscapeString($this->arrRequest[3]);
					$objCountry = new Country($countryCode);
					if ($objCountry->id) $this->actionEdit($objCountry);
					else $this->setError(404);
				break;
			case 'merge':
				$countryCode = Service_Escape::absolutelyEscapeString($this->arrRequest[3]);
					$objCountry = new Country($countryCode);
					if ($objCountry->id) $this->actionMerge($objCountry);
					else $this->setError(404);
				break;
			default:
				$this->setError(404);
				break;
		}
	}

	/**
	 * Выводим все страны для администрирования
	 *
	 * @param int $idWorldPart - ID части света
	 */
	public function actionList($idWorldPart = null) {
		$objCountry = new Country();
	  $arrCountries = $objCountry->find('all', array('order' => '`country_final_name_ru` ASC, `country_final_name_en` ASC',  'limit' => $this->pageLimit, 'offset' => ($this->pageNum - 1) * $this->pageLimit));
    $this->elementsInListAmount = $objCountry->count(); //получаем общее кол-во стран;
		
    $objViewCountry = new View_Country();
    $this->title = $this->pageHead = 'Список стран';
    //$this->addJs('country.js');
    		
    $this->showHeader();
	    echo '<div id="mainAdministration">';
     		$objViewCountry->showListForAdmin($arrCountries);
     		$this->showPages();
	    echo '</div>';
		$this->showFooter();
	}
	
  /**
   * Выводит страницу редактирования страны
   * 
   * @param Country $objCountry - объект страны для редактирования
   */
  public function actionEdit(Country $objCountry) {
		$editId = $objCountry->id;
		if (isset($_POST['Country'])) {
			$objCountry = new Country($_POST['Country']);
			if ($objCountry->id != $editId) User_Session::moveTo(View_Base::getLanguageUrl(W_ADMIN) . 'countries/', Service_Translate::getText('Недопустимое действие'));
			if ($objCountry->save()) User_Session::moveTo(W_ADMIN . 'countries/', 'Страна успешно сохранена', 1);
		}
  	
  	$objViewCountry = new View_Country();
  	$this->pageHead = $this->title = 'Редактирование страны "' . View_Country::getName($objCountry->tableFields) . '"';
  	$this->addWysiwygMetas();
    
  	$this->showHeader();
      $objViewCountry->showEditForm($objCountry);
    $this->showFooter();
  }
	
  /**
   * Выводит страницу совмещения городов страны
   * 
   * @param Country $objCountry - объект страны для редактирования
   */
  public function actionMerge(Country $objCountry) {
  	$arrOldCities = $objCountry->getOldUncopiedCities();
  	$objCity = new City();
  	$arrNewCities = $objCity->find('all', array('select' => "`ID_city`, `city_name_ru`, `city_name_en`", 'conditions' => "`country_code` = '" . $objCountry->id . "' AND `is_filled` = 0", 'order' => "`city_name_en` ASC, `city_name_ru` ASC"));
  	
  	$objViewCity = new View_City();
  	$this->pageHead = $this->title = 'Совмещение городов страны "' . View_Country::getName($objCountry->tableFields) . '"';
    
  	$this->showHeader();
      $objViewCity->showMergeLists($arrNewCities, $arrOldCities);
    $this->showFooter();
  }
  
}
?>